﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
    class class_Program4
    {
        static void Main(string[] args)
        {
            //1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。如果是一个方法只能有一个返回值，
            //那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。

            //参考步骤：
            //定义一个一维数组，数组中存放一些数据（控制台输入）。
            //定义几个变量：max、min、sum、avg

            //定义一个方法，方法返回数组元素之和,方法形参有max min avg。

            //请用ref和out各做一遍，并在注释中，描述他们的区别。

            //ref 与 out 的区别 ：
            //1.ref 变量必须初始化，而out可以初始化也可以不初始化，out初始化并不影响
            //out的使用。
            //2.定义方法中ref 传入的参数 在函数中可以不用赋值，而out 必须赋值才可以离开函数。
            //3.ref传进去的参数在函数内部可以直接使用，而out不可（除非在函数体内部，out参数在使用之前赋值）：

            int max = 0;

            int min = 0;

            int avg = 0;


            int a = count(ref max, ref min, ref avg);

            Console.WriteLine("和为" + a);

            int b = result(out max, out min, out avg);

            Console.WriteLine("和为" + b);



        }
        public static int count(ref int max, ref int min, ref int avg)
        {
            int a = 0;
            int sum = 0;
            int[] arr = new int[5];
            Console.WriteLine("输入五个整数");

            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
                sum = sum + arr[i];
                a++;
            }

            max = arr[0];

            for (int i = 0; i < arr.Length; i++)
            {
                if (max < arr[i])
                {
                    max = arr[i];
                }
            }
            Console.WriteLine("最大数为" + max);
            min = arr[0];

            for (int i = 0; i < arr.Length; i++)
            {
                if (min > arr[i])
                {
                    min = arr[i];
                }
            }
            Console.WriteLine("最小数为" + min);

            avg = sum / a;
            Console.WriteLine("平均数为" + avg);


            return sum;
        }
        public static int result(out int max, out int min, out int avg)
        {
            int a = 0;
            int sum = 0;
            int[] arr = new int[5];
            Console.WriteLine("输入五个整数");

            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
                sum = sum + arr[i];
                a++;
            }

            max = arr[0];

            for (int i = 0; i < arr.Length; i++)
            {
                if (max < arr[i])
                {
                    max = arr[i];
                }
            }
            Console.WriteLine("最大数为" + max);
            min = arr[0];

            for (int i = 0; i < arr.Length; i++)
            {
                if (min > arr[i])
                {
                    min = arr[i];
                }
            }
            Console.WriteLine("最小数为" + min);

            avg = sum / a;
            Console.WriteLine("平均数为" + avg);


            return sum;

        }

    }
}
   
